<?php
//   +----------------------------------------------------------------------
//   | Copyright (c) 2015-2025 http://www.hdphp.cn All rights reserved.
//   | Licensed ( http://www.hdphp.cn/licenses/ )
//   | Author: Jack <sophia2152@qq.com>
//   | 官方网址: http://www.hdphp.cn
//   | 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用。
//   | 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
//   +----------------------------------------------------------------------
namespace app\controller\admin\v1\system\config;

use app\controller\admin\Auth;
use app\services\system\config\SystemConfigServices;
use app\services\system\config\SystemConfigTabServices;
use think\facade\App;

/**
 * Class：系统配置分类控制器
 * 创建人：Jack
 * 创建时间：2023/8/24 9:25
 * @package app\controller\admin\v1\system\config
 */
class SystemConfigTab extends Auth
{
    /**
     * 构造方法
     * SystemConfigTab constructor.
     * @param App                     $app
     * @param SystemConfigTabServices $services
     */
    public function __construct(App $app, SystemConfigTabServices $services)
    {
        parent::__construct($app);
        $this->services = $services;
    }

    /**
     * 注释：分类列表
     * 创建人：Jack
     * 创建时间：2023/8/24 9:07
     * @return mixed
     */
    public function index()
    {
        $where = $this->request->getMore([
            ['status', ''],
            ['title', '']
        ]);
        return $this->success($this->services->getConfgTabList($where));
    }

    /**
     * 注释：创建分类
     * 创建人：Jack
     * 创建时间：2023/8/24 9:17
     * @return mixed
     */
    public function create()
    {
        $data = $this->request->postMore([
            'eng_title',
            'status',
            'title',
            'icon',
            ['type', 0],
            ['sort', 0],
            ['pid', []]
        ]);
        $data['pid'] = end($data['pid']);
        if (!$data['title']) return $this->fail('请输入按钮名称');
        if (!$data['eng_title']) return $this->fail('请输入分类字段');
        $this->services->save($data);

        return $this->success('添加成功!');
    }

    /**
     * 注释：更新分类
     * 创建人：Jack
     * 创建时间：2023/8/24 9:19
     * @param $id
     * @return mixed
     */
    public function update($id)
    {
        $data = $this->request->postMore([
            'title',
            'status',
            'eng_title',
            'icon',
            ['type', 0],
            ['sort', 0],
            ['pid', []]
        ]);
        $data['pid'] = end($data['pid']);
        if (!$data['title']) return $this->fail('请输入分类昵称');
        if (!$data['eng_title']) return $this->fail('请输入分类字段');
        $this->services->update($id, $data);

        return $this->success('修改成功!');
    }

    /**
     * 注释：删除分类
     * 创建人：Jack
     * 创建时间：2023/8/24 9:24
     * @param SystemConfigServices $services
     * @param                      $id
     * @return mixed
     */
    public function delete(SystemConfigServices $services, $id)
    {
        if ($services->count(['tab_id' => $id])) {
            return $this->fail('存在下级配置，无法删除！');
        }
        if (!$this->services->delete($id)) {
            return $this->fail('删除失败,请稍候再试!');
        }

        return $this->success('删除成功!');
    }

    /**
     * 注释：修改分类状态
     * 创建人：Jack
     * 创建时间：2023/8/24 9:20
     * @param $id
     * @param $status
     * @return mixed
     */
    public function set_status($id, $status)
    {
        if ($status == '' || $id == 0) {
            return $this->fail('参数错误');
        }
        $this->services->update($id, ['status' => $status]);
        return $this->success($status == 0 ? '隐藏成功' : '显示成功');
    }

    /**
     * 注释：获取配置分类选择下拉树
     * 创建人：Jack
     * 创建时间：2023/8/24 10:16
     * @return mixed
     */
    public function select_list()
    {
        return $this->success($this->services->getSelectTreeList());
    }

}